import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 */

public class Text {
    public static void main5(String[] args) {
        TreeSet<String> set =new TreeSet<>();
        System.out.println(set.add("123")); //返回 true
        System.out.println(set.add("123")); //返回 false,key必须唯一
        set.add("abc");
        set.add("lisi");
//      set.add(null); //报错，和 TreeMap一样的原因
        set.remove("123"); //删除key
        System.out.println(set.contains("123")); //结果为 false,看集合里是否存在key
        System.out.println(set.size());          //查看集合中元素的个数
        //遍历 set 集合中的所有key
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
        System.out.println();
        set.clear();            //清空set中的所有元素
        System.out.println(set.isEmpty()); //结果为true， 看集合是否为空
    }
    public static void main4(String[] args) {
        TreeMap<Person,Integer> map =new TreeMap<>();
        map.put(new Person(),12);
    }
    public static void main3(String[] args) {
        TreeMap<Teacher,Integer> map =new TreeMap<>();
        map.put(new Teacher(),12);
    }
    public static void main2(String[] args) {
        Comparastudent comparastudent =new Comparastudent();
        TreeMap<Student,Integer> map =new TreeMap<>(comparastudent);
        map.put(new Student(),12);
    }
    public static void main(String[] args) {
        TreeMap<String,Integer> map =new TreeMap<>();
        //设置key和 value值
        map.put("zhangshang",1);
        map.put("lisi",99);
        map.put("wangwu",66);
        map.put("abc",3);
        System.out.println(map.put("abc", 2)); //key值可以相同，如果相同只会改value值，此时“abc”的value值为2
        //不能插入null，因为底层为一个红黑树，也是一个搜索树
        //而搜索树每次插入都得进行比较,null值不能进行比较
//      map.put(null,22);
        //得出key对应的value值
        System.out.println(map.get("abc")); //得出结果为2
        //报错，原因是返回null后用int接收拆箱操作
        //会转化为 null.intValue 导致为空指针异常
//        int ret = map.get("abc1");
//        System.out.println(ret);
        System.out.println(map.remove("abc"));//结果为2，删除key值并返回对应的 Value
        System.out.println(map.get("abc")); //由于删除结果为空
        System.out.println(map.containsKey("abc")); //查看是否有key 结果为 false
        System.out.println(map.containsValue(2)); // 查看是否有value 结果为 false
        //也是找 key 值并返回对应的 value 值，但如果没找到返回自己设置的默认值而不是 null
        //所以结果为 555
        System.out.println(map.getOrDefault("abc", 555));
        //遍历map中的所有节点的 key和 value
        //不能使用迭代器，因为 Map没实现 iterable 接口，不能得到迭代器
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String,Integer> node:entries) {
            System.out.println("key :"+node.getKey()+"value :"+node.getValue());
        }
        for (Integer s: map.values()) {
            System.out.print(s+" ");
        }
        System.out.println();
        for (String s: map.keySet()) {
            System.out.print(s+" ");
        }
        System.out.println();
        System.out.println(map);  //调用了底层实现的toString()方法
    }

}
class Student {

}
class Teacher implements Comparable<Teacher> {

    @Override
    public int compareTo(Teacher o) {
        return 0;
    }
}
class Comparastudent implements Comparator{
    @Override
    public int compare(Object o1, Object o2) {
        return 0;
    }
}
class Person{

}
